package br.unicamp.ft.sahp.model.dao.impl;

import java.util.List;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import br.unicamp.ft.sahp.model.dao.AbstractDAO;
import br.unicamp.ft.sahp.model.dao.CondutorDAO;
import br.unicamp.ft.sahp.model.entidades.Condutor;
import br.unicamp.ft.sahp.model.exception.CondutorNaoEncontradoException;

@Repository
public class CondutorDAOImpl extends AbstractDAO<Condutor, Long> implements
		CondutorDAO {

	@Autowired
	public CondutorDAOImpl(
			@Qualifier("entityManagerFactory") EntityManagerFactory factory) {
		super(factory, Condutor.class);
	}

	public Condutor findCondutorByUsuarioAndSenha(String usuario, String senha)
			throws CondutorNaoEncontradoException {
		
		String consulta = "SELECT condutor FROM Condutor condutor "
			+ "WHERE condutor.login = :usuario AND condutor.senha = :senha";

		Query query = getEntityManager().createQuery(consulta);
		query.setParameter("usuario", usuario);
		query.setParameter("senha", senha);
	
		List<Condutor> listaCondutores = null;
		listaCondutores = query.getResultList();
		
		if (listaCondutores == null || listaCondutores.isEmpty()) {
			throw new CondutorNaoEncontradoException();
		}
	
		System.out.println("AvaliadorDAO - EXISTE PELO MENOS 1 AVALIADOR!");
		return listaCondutores.get(0);
	}
}